//
// DotNetNuke - http://www.dotnetnuke.com
// Copyright (c) 2002-2010
// by Perpetual Motion Interactive Systems Inc. ( http://www.perpetualmotion.ca )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
// to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions 
// of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
// DEALINGS IN THE SOFTWARE.
//

using System;
using DotNetNuke.Entities.Tabs;
namespace DotNetNuke.UI.Skins.Controls
{
	partial class BreadCrumb : UI.Skins.SkinObjectBase
	{
		private string _separator;
		private string _cssClass;
		private string _rootLevel;
		private bool _useTitle = false;
		const string MyFileName = "Breadcrumb.ascx";
		public string Separator
		{
			get { return _separator; }
			set { _separator = value; }
		}
		public string CssClass
		{
			get { return _cssClass; }
			set { _cssClass = value; }
		}
		public string RootLevel
		{
			get { return _rootLevel; }
			set { _rootLevel = value; }
		}
		public bool UseTitle
		{
			get { return _useTitle; }
			set { _useTitle = value; }
		}

		private void InitializeComponent()
		{
		}
		protected override void OnInit(EventArgs e)
		{
			base.OnInit(e);

			InitializeComponent();
		}
		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);
			string strSeparator;
			if (!String.IsNullOrEmpty(Separator))
			{
				if (Separator.IndexOf("src=") != -1)
				{
					Separator = Separator.Replace("src=\"", "src=\"" + PortalSettings.ActiveTab.SkinPath);
				}
				strSeparator = Separator;
			}
			else
			{
				strSeparator = "&nbsp;<img alt=\"*\" src=\"" + Common.Globals.ApplicationPath + "/images/breadcrumb.gif\">&nbsp;";
			}
			string strCssClass;
			if (!String.IsNullOrEmpty(CssClass))
			{
				strCssClass = CssClass;
			}
			else
			{
				strCssClass = "SkinObject";
			}
			int intRootLevel;
			if (!String.IsNullOrEmpty(RootLevel))
			{
				intRootLevel = int.Parse(RootLevel);
			}
			else
			{
				intRootLevel = 1;
			}
			string strBreadCrumbs = "";
			if (intRootLevel == -1)
			{
				strBreadCrumbs += string.Format(Services.Localization.Localization.GetString("Root", Services.Localization.Localization.GetResourceFile(this, MyFileName)), Common.Globals.GetPortalDomainName(PortalSettings.PortalAlias.HTTPAlias, Request, true), strCssClass);
				strBreadCrumbs += strSeparator;
				intRootLevel = 0;
			}
			int intTab;
			for (intTab = intRootLevel; intTab <= PortalSettings.ActiveTab.BreadCrumbs.Count - 1; intTab++)
			{
				if (intTab != intRootLevel)
				{
					strBreadCrumbs += strSeparator;
				}
				TabInfo objTab = (TabInfo)PortalSettings.ActiveTab.BreadCrumbs[intTab];
				string strLabel = objTab.LocalizedTabName;
				if (UseTitle && !String.IsNullOrEmpty(objTab.Title))
				{
					strLabel = objTab.Title;
				}
				if (objTab.DisableLink)
				{
					strBreadCrumbs += "<span class=\"" + strCssClass + "\">" + strLabel + "</span>";
				}
				else
				{
					strBreadCrumbs += "<a href=\"" + objTab.FullUrl + "\" class=\"" + strCssClass + "\">" + strLabel + "</a>";
				}
			}
			lblBreadCrumb.Text = strBreadCrumbs;
		}
	}
}
